package com.py.credit.service;

import java.util.List;
import java.util.Map;

import com.py.credit.entity.BatchLog;
import com.py.credit.entity.Column;
import com.py.credit.entity.SysUser;
import com.py.credit.entity.Table;
import com.py.framework.core.common.Page;

public interface DataEntryService {

	List<Column> getColunmList(int tableId);

	List<Table> getTableList(String code);

	void updataData(int tableId, Map<String, Object> map, List<Column> columns, int dataId);

	void deleteData(int tableId, int dataId);

	List<Map<String, Object>> getTableListForPage(int tableId, String startTime, String endTime, Page page,
			SysUser userInfo,Integer deptId);

	/**
	 * 
	 * @Function 成功数据入库
	 * @FileName DataEntryService.java
	 * @MethodName addSuccessData
	 * @param listDataMap
	 * @param table
	 * @param batchLog
	 * @param columns
	 * @Date 2018年7月10日 上午10:24:41
	 * @Author Min DongXv
	 *
	 */
	void addSuccessData(List<Map<String, Object>> listDataMap, Table table, BatchLog batchLog, List<Column> columns);

	/**
	 * 
	 *
	 * @Function 创建临时表
	 * @FileName DataEntryService.java
	 * @MethodName createTempTable
	 * @param tableName
	 *            表名
	 * @param columns
	 *            列字段
	 * @Date 2018年8月21日 上午10:09:02
	 * @Author Min DongXv
	 *
	 */
	void createTempTable(String tableName, List<Column> columns);

	/**
	 * 
	 *
	 * @Function 更新临时表中重复数据的状态为S
	 * @FileName DataEntryService.java
	 * @MethodName updateStatus
	 * @param tableRes
	 *            源表
	 * @param tableDes
	 *            目标表
	 * @Date 2018年8月21日 上午10:09:31
	 * @Author Min DongXv
	 *
	 */
	void updateStatus(String tableRes, String tableDes);

	/**
	 * 
	 *
	 * @Function 删除临时表
	 * @FileName DataEntryService.java
	 * @MethodName dropTempTable
	 * @param tableName
	 *            表名
	 * @Date 2018年8月21日 上午10:12:21
	 * @Author Min DongXv
	 *
	 */
	void dropTempTable(String tableName);

	/**
	 * 
	 * @Function 添加数据到内存表
	 * @FileName DataEntryService.java
	 * @MethodName addDataToTemp
	 * @param listDataMap
	 *            数据列表
	 * @param table
	 *            表信息
	 * @param batchLog
	 *            批次信息
	 * @param columns
	 *            字段列信息
	 * @param tableName
	 *            表名
	 * @Date 2018年8月21日 上午10:14:49
	 * @Author Min DongXv
	 *
	 */
	void addDataToTemp(List<Map<String, Object>> listDataMap, Table table, BatchLog batchLog, List<Column> columns,
			String tableName);

	/**
	 * 
	 * @Function 查询临时表重复数据
	 * @FileName DataEntryService.java
	 * @MethodName countDataNum
	 * @param tableName
	 *            表名
	 * @return
	 * @Date 2018年8月21日 上午10:50:58
	 * @Author Min DongXv
	 *
	 */
	int countDataNum(String tableName, String status);

	/**
	 *
	 * @Function 数据拷贝
	 * @FileName DataEntryService.java
	 * @MethodName copyData
	 * @param tableRes
	 *            源表
	 * @param tableDes
	 *            目标表
	 * @param columns
	 *            字段列
	 * @Date 2018年8月21日 上午11:13:32
	 * @Author Min DongXv
	 *
	 */
	void copyData(String tableRes, String tableDes, List<Column> columns);

	/**
	 *
	 * @Function 清空内存表数据
	 * @FileName DataEntryService.java
	 * @MethodName clearTable
	 * @param tableName
	 *            表名
	 * @Date 2018年8月21日 下午1:43:31
	 * @Author Min DongXv
	 *
	 */
	void clearTable(String tableName);

	/**
	 * 
	 *
	 * @Function 实体表数据更新操作
	 * @FileName DataEntryService.java
	 * @MethodName editData
	 * @param tableId
	 *            表ID
	 * @param map
	 *            数据MAP
	 * @param columns
	 *            列信息
	 * @param dataId
	 *            数据ID
	 * @Date 2018年9月28日 下午2:32:32
	 * @Author Min DongXv
	 *
	 */
	void editData(int tableId, Map<String, Object> map, List<Column> columns, int dataId, SysUser userInfo);

	/**
	 * 
	 *
	 * @Function 数据删除
	 * @FileName DataEntryService.java
	 * @MethodName delData
	 * @param tableId
	 *            表ID
	 * @param dataId
	 *            数据记录ID
	 * @Date 2018年9月28日 下午3:24:33
	 * @Author Min DongXv
	 *
	 */
	void delData(int tableId, int dataId, SysUser userInfo);

}
